Deployment of applications in environments, such as a data centre or a testing environment, involves a complex setup process which is often done manually for each separate deployment. The deployment setup can involve a combination of both common components that are specific to the application but are not dependent on the environment and components that are specific to the environment. When an application is deployed in different environments using the manual process, the deployment setup is manually recreated for each new environment even if there are components that are common for every deployment of the application. This redundancy in the specification of the common components for the application is cumbersome and can introduce errors and inconsistencies between different but similar deployments.
Further, since the deployment setup is a manual process, the requirements of the application are conceptualized by a user employing actual resources available in the data center. Preservation of such a logical view of the deployment would enable flexibility in the assignment of resources for the deployment of the application.